home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / rfc / rfc189 < prev    next >
Text File  |  1991-04-20  |  37KB  |  1,003 lines

  1.  
  2.                                                                15 Jul 71
  3. NIC 7133, RFC 189:  Interim NETRJS Specifications
  4.  
  5.  
  6.  
  7. NETWORK WORKING GROUP                                       R. T. BRADEN
  8. REQUEST FOR COMMENTS #189                                       UCLA/CCN
  9. NIC #7133                                                  JULY 15, 1971
  10. CATEGORIES: D
  11. OBSOLETES: RFC #88 (NIC #5668)
  12. UPDATES: NONE
  13.  
  14.                      INTERIM NETRJS SPECIFICATIONS
  15.  
  16. The following document describes the operation and protocol of the
  17. remote job entry service to CCN's 360 Model 91.  The interim protocol
  18. described here will be implemented as a production service before the
  19. end of July.  Two host sites (Rand and UCLA/NMC) have written user
  20. processes for the interim NETRJS, based on the attached document.
  21. Questions on it should be addressed to CCN's Technical Liason.
  22.  
  23. It is anticipated that the interim protocol will be superseded in a few
  24. months by a revised NETRJS, but the changes will be minor.  The revision
  25. will bring the data transfer protocol of NETRJS into complete conformity
  26. with the proposed Data Transfer Protocol DTP (see RFC #171).  The
  27. present differences between the DTP and NETRJS protocols are:
  28.  
  29.    (a)  The format (but not the contents) of the 72 bit transaction
  30.         header of NETRJS must be changed to conform with DTP.
  31.  
  32.    (b)  The End-of-Data marker must be changed from X'FE' to X'B40F'.
  33.  
  34.    (c)  The initial "modes available" transaction of DTP must be added.
  35.  
  36.    (d)  Some of the DTP error codes will be implemented.
  37.  
  38. No other protocol changes are presently planned, although some may be
  39. suggested by operating experience with the interim protocol.  When the
  40. revised protocol has been fuly specified, it will be implemented with
  41. different ICP sockets than the interim protocol.  This will alow a site
  42. which wants to start using CCN immediately to convert his protocol at
  43. leisure.
  44.  
  45. Some possible future extensions to NETRJS which have been suggested are:
  46.  
  47.    (1)  A 7-bit ASCII option on data transfer connections, for the
  48.         convenience of PDP-10's.
  49.  
  50.    (2)  A "transparency" mode for input from ASCII remote sites, to
  51.         allow the transmission of "binary decks" (object decks) in the
  52.         job stream from these sites.
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. Braden                                                          [page 1]
  60.  
  61.                                                                15 Jul 71
  62. NIC 7133, RFC 189:  Interim NETRJS Specifications
  63.  
  64.  
  65.  
  66.    (3)  More than one simultaneous virtual card reader, printer, and
  67.         punch stream to the same virtural terminal.
  68.  
  69. Comments on the utility of these proposals or others for your site would
  70. be appreciated.
  71.  
  72.    Robert T. Braden
  73.    Technical Liason
  74.    UCLA/CCN
  75.    (213) 825-7518
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118. Braden                                                          [page 2]
  119.  
  120.                                                                15 Jul 71
  121. NIC 7133, RFC 189:  Interim NETRJS Specifications
  122.  
  123.  
  124.  
  125.                       REMOTE JOB ENTRY TO UCLA/CCN
  126.                          FROM THE ARPA NETWORK
  127.  
  128.                            (Interim Protocol)
  129.  
  130. A.  Introduction
  131.  
  132.    NETRJS is the protocol for the remote job entry service to the 360
  133.    Model 91 at the UCLA Campus Computing Network (CCN).  NETRJS allows
  134.    the user at a remote host to access CCN's RJS ("Remote Job Service")
  135.    subsystem, which provides remote job entry service to real remote
  136.    batch (card reader/line printer) terminals over direct communications
  137.    lines as well as to the ARPA NETWORK.
  138.  
  139.    To use NETRJS, a user at a remote host needs a NETRJS user process to
  140.    communicate with one of the NETRJS server processes at CCN.  Each
  141.    active NETRJS user process appears to RJS as a separate (virtual)
  142.    remote batch terminal; we will refer to it as a VRBT.
  143.  
  144.    A VRBT may have virtual card readers, printers, and punches.  Through
  145.    a virtual card reader a Network user can transmit a stream of card
  146.    images comprising one or more OS/360 jobs, complete with Job Control
  147.    Language, to CCN.  These jobs will be spooled into CCN's batch system
  148.    (OS/360 MVT) and run according to their priority.  RJS will
  149.    automatically return the print and/or punch output images which are
  150.    created by these jobs to the virtual printer and/or card punch at the
  151.    VRBT from which the job came (or to a different destination specified
  152.    in the JCL).  The remote user can wait for his output, or he can sign
  153.    off and sign back on later to receive it.
  154.  
  155.    The VRBT is assumed to be under the control of the user's teletype or
  156.    other remote console; this serves the function of an RJS remote
  157.    operator console.  To initiate  NETRJS session, the remote user must
  158.    execute the standard ICP (see RFC #165) to fixed socket at CCN.  The
  159.    result is to extablish a duplex Telnet connection to his console,
  160.    allowing the user to sign into RJS.  Once he is signed in, he can use
  161.    his console to issue commands to RJS and to receive status,
  162.    confirmation, and error messages from RJS.  The most importand TJS
  163.    commands are summarized in Appendix D.
  164.  
  165.    Different VRBT's are distinguished by 8-character terminal id's.
  166.    There may be more than one VRBT using RJS simultaneously from the
  167.    same remote host.  Terminal id's for new VRBT's will be assigned by
  168.    CCN to individual users or user groups who wish to run batch jobs at
  169.    CCN (contact the CCN Technical Liaison for details).
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. Braden                                                          [page 3]
  178.  
  179.                                                                15 Jul 71
  180. NIC 7133, RFC 189:  Interim NETRJS Specifications
  181.  
  182.  
  183.  
  184. B.  Connections and Protocols
  185.  
  186.    Figure 1 shows conceptually the processes and protocols required to
  187.    use NETRJS.  The operator console uses a duplex connection under the
  188.    Telnet third-level protocol (see RFC #158.)  The actual data transfer
  189.    streams for job input and output are handled over separate simplex
  190.    connections using a data transfer protocol.
  191.  
  192.    We will use the term "channel" for one of the NETRJS connections, and
  193.    designate it "input" or "output" with reference to CCN.  Each data
  194.    transfer channel is identified with a particular virtual remote
  195.    device--card reader printer, or punch.  The data transfer channels
  196.    need be open only while they are in use, and different channels may
  197.    be used sequentially or simultaneously.  NETRJS will presently
  198.    support simultaneous operation of a virtual card reader, a virtual
  199.    printer, and a virtual punch (in addition to the operator console) on
  200.    the same VRBT process.  RJS itself will support more than one reader,
  201.    printer, and punch at each remote terminal, so the NETRJS protocol
  202.    could easily be expanded in the future to allow more simultaneous I/O
  203.    streams to each Network user.
  204.  
  205.    The remote user needs a local escape convention so he can send
  206.    commands directly to his VRBT process.  These local VRBT commands
  207.    would allow selection of the files at his host which contain job
  208.    streams to be sent to the server, and files to receive job output
  209.    from the server.  They would also allow the user to open data
  210.    transfer channels to the NETRJS server process, and to close these
  211.    connections to free buffer space or abort transmission.
  212.  
  213.    When a VRBT starts a session, it has a choice of two ICP sockets,
  214.    depending upon whether it is an ASCII or and EBCDIC virtual terminal.
  215.    An EBCDIC virtual terminal transmits and receives its data as
  216.    transparent streams of 8 bit bytes (since CCN is an EBCDIC
  217.    installation).  It is expected that a user at an ASCII installation,
  218.    however, will want his VRBT declared ASCII; RJS will then translate
  219.    the input stream from ASCII to EBCDIC and translate the printer
  220.    stream back to ASCII.  This will allow the user to employ his local
  221.    text editor for preparing input to CCN and for examing output.  The
  222.    punch stream will always be transparent, for outputting "binary
  223.    decks".
  224.  
  225.    It should be noted that the choice of code for the operator console
  226.    connections is independent of declared terminal type; in particular,
  227.    they always use ASCII under Telnet protocol, even from an EBCDIC
  228.    VRBT.
  229.  
  230.    NETRJS protocol provides data compression, replacing repeated blanks
  231.  
  232.  
  233.  
  234.  
  235.  
  236. Braden                                                          [page 4]
  237.  
  238.                                                                15 Jul 71
  239. NIC 7133, RFC 189:  Interim NETRJS Specifications
  240.  
  241.  
  242.  
  243.    or other characters by repeat counts.  However, when the terminal id
  244.    is assigned by CCN, a particular network terminal may be specified as
  245.    using no data compression.  In this case, NETRJS will simply truncate
  246.    trailing blanks and send records in a simple "op code-length-data"
  247.    form, called "truncated format".
  248.  
  249. C.  Starting and Terminating a Session
  250.  
  251.    The remote user establishes a connection to RJS via the standard ICP
  252.    from his socket U to socket 11 (decimal) for EBCDIC or socket 13
  253.    (decimal) for ASCII at host 1, IMP 1.  If successful, the ICP results
  254.    in a pair of connections which are in fact the NETRJS operator
  255.    control connections.
  256.  
  257.    Once the use is connected, he must enter a valid RJS signon command
  258.    ("SIGNON terminal-id") through his console.  RJS will normally
  259.    acknowledge signon with a console message; however, if RJS does not
  260.    recognize the terminal-id or has no available Line Handler for the
  261.    Network, it will indicate refusal by closing both operator
  262.    connections.  If the user attempts to open data transfer connections
  263.    before his signon command is accepted, the data transfer connections
  264.    will be refused by CCN with an error message to his console.
  265.  
  266.    Suppose the operator input connection is socket S at CCN; S is the
  267.    even number sent in the ICP.  Then the other NETRJS channels have
  268.    sockets at CCN with fixed relation to S, as shown in the table below.
  269.    Until there is a suitable Network-wide solution to the problem of
  270.    identity control on sockets, NETRJS will also require that the VRBT
  271.    process use fixed socket offsets from his initial connection socket
  272.    U.  These are shown in the follwoing table:
  273.  
  274.              Channel         CCN Socket (Server)  Remote Socket (User)
  275.  
  276.    Remote Operator Console Input       S               U + 3 Telnet
  277.    Remote Operator Console Input       S + 1           U + 2 Telnet
  278.    Data Transfer Card Reader #1        S + 2           U + 5
  279.    Data Transfer Printer #1            S + 3           U + 4
  280.    Data Transfer Punch #1              S + 5           U + 6
  281.  
  282.    Once the user is signed on, he can open data transfer channels and
  283.    initiate input and output operations as explained in the following
  284.    sections.  To terminate the session, the remote user may close all
  285.    connections.  Alternatively, the user may enter a SIGNOFF command
  286.    through his console; in this case, RJS will wait until the current
  287.    job output streams are complete and then itself terminate the session
  288.    by closing all connections.
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295. Braden                                                          [page 5]
  296.  
  297.                                                                15 Jul 71
  298. NIC 7133, RFC 189:  Interim NETRJS Specifications
  299.  
  300.  
  301.  
  302. D.  Input Operations
  303.  
  304.    A job stream for submission to RJS at CCN is a series of logical
  305.    records, each of which is a card image.  A card image may be at most
  306.    80 characters long, to match the requirements of OS/360 for job
  307.    input.  The user can submit a "stack" of successive jobs through the
  308.    card reader channel with no end-of-job indication between jobs; RJS
  309.    recognizes the beginning of each new job by the appearance of a JOB
  310.    card.
  311.  
  312.    To submit a job or stack of jobs for execution at CCN, the remote
  313.    user must first open the card reader channel.  He signals his VRBT
  314.    process to issue Init (local = U + 5, foreign = S + 2, size = 8).
  315.    NETRJS, which is listening on socket S + 2, will normally return an
  316.    RTS command, opening the channel.  If, however, it should happen that
  317.    all input buffer space within the CCN NCP is in use, the request will
  318.    be refused, and the user should try again later.  If the problem
  319.    persists, call the Technical Liaison at CCN.
  320.  
  321.    When the connection is open, the user can begin sending his job
  322.    stream using the protocol defined in Apendix A.  For each job
  323.    successfully spooled, the user will receive a confirming message on
  324.    his console.  At the end of the stack, he must send an End-of-Data
  325.    transaction to initiate processing of the last job.  NETRJS will then
  326.    close the channel (to avoid holding buffer space unnecessarily).  At
  327.    any time during the session, the user can re-open the card reader
  328.    channel and transmit another job stack.  He can also terminate the
  329.    session and sign on later to get his output.
  330.  
  331.    The user can abort the card reader channel at any time by closing the
  332.    channel (his socket S + 2).  NETRJS will then discard the last
  333.    partially spooled job.  If NETRJS finds an error (e.g., transaction
  334.    sequence number error or a dropped bit), it will abort the channel by
  335.    closing the connection prematurely, and also inform the user via his
  336.    console that his job was discarded (thus solving the race condition
  337.    between End-of-Data and aborting).  The user needs to retransmit only
  338.    the last job.  However, he could retransmit the entire stack
  339.    (although it would be somewhat wasteful) since the CCN operating
  340.    system enforces job name uniqueness by immediately "flushing" jobs
  341.    with names already in the system.
  342.  
  343.    If the user's process, NCP, or host, or the Network itself fails
  344.    during input, RJS will discard the job being transmitted.  A message
  345.    informing the user that this job was discarded will be generated and
  346.    sent to him the next time he signs on.  On the other hand, those jobs
  347.    whose receipt have been acknowledged on the operator's console will
  348.    not be affected by the failure, but will be executed by CCN.
  349.  
  350.  
  351.  
  352.  
  353.  
  354. Braden                                                          [page 6]
  355.  
  356.                                                                15 Jul 71
  357. NIC 7133, RFC 189:  Interim NETRJS Specifications
  358.  
  359.  
  360.  
  361. E.  Output Operations
  362.  
  363.    The user may wait to set up a virtual printer (or punch) and open its
  364.    channel until a STATUS message on his console indicates output is
  365.    ready; or he may leave the output channel(s) open during the entire
  366.    session, ready to receive output whenever it becomes available.  He
  367.    can also control which one of several available jobs is to be
  368.    returned by entering appropriate operator commands.
  369.  
  370.    To be prepared to receive printer (or puhch) output from his jobs,
  371.    the user site issues Init (local = U + 4 (U + 6), foreign = S + 3 (S
  372.    + 5), size = 8), respectively.  NETRJS is listening on these sockets
  373.    and should immediately return an STR.  However, it is possible that
  374.    because of software problems at CCN, RJS will refuse the connection
  375.    and a CLS will be returned; in this case, try again or call the
  376.    Technical Liaison.
  377.  
  378.    When RJS has output to send to a particular (virtual) terminal and a
  379.    corresponding open output channel, it will send the output as a
  380.    series of logical records using the protocol in Appendix A.  The
  381.    first record will consist of the job name (8 characters) followed by
  382.    a comma and then the ID string from the JOB card (if any).  In the
  383.    printer stream, the first column of each record will be an ASA
  384.    carriage control character (see Appendix C); the punch output stream
  385.    will never contain carraiage control characters.
  386.  
  387.    NETRJS will send an End-of-Data transaction and then close an output
  388.    channel at the end of the output for each complete batch job; the
  389.    remote site must then send a new RFC (and ALL) to start output for
  390.    another job.  This gives the remote site a chance to allocate a new
  391.    file for each job without breaking the output within a job.  If the
  392.    user at the remote site wants to cancel (or backspace or defer) the
  393.    output of a particular job, he enters appropriate RJS commands on the
  394.    operator input channel (see Appendix D).
  395.  
  396.    A virtual printer in NETRJS has 254 columns, exclusive of carriage
  397.    control;  RJS will send up to 255 characters of a logical record it
  398.    finds in a SYSOUT data set.  If the user wishes to reject or fold
  399.    records longer than some smaller record size, he can do so in his
  400.    VRBT process.
  401.  
  402.    If RJS encounters a permanent I/O error in reading the disk data set,
  403.    it will notify the user via his console, skip forward to the next set
  404.    of system messages or SYSOUT data set in the same job, and continue.
  405.    In the future, RJS may be changed to send a Lost Data marker within
  406.    the data stream as well as a console message to the user.  In any
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413. Braden                                                          [page 7]
  414.  
  415.                                                                15 Jul 71
  416. NIC 7133, RFC 189:  Interim NETRJS Specifications
  417.  
  418.  
  419.  
  420.    case, the user will receive notification of termination of output
  421.    data transfer for each job via messages on his console.
  422.  
  423.    If the user detects an error in the stream, he can issue a Backspace
  424.    (BSP) command from his console to repeat the last "page" of output,
  425.    or a Restart (RST) command to repeat from the last SYSOUT data set or
  426.    the beginning of the job, or he can abort the channel by closing his
  427.    socket.  If he aborts the channel, RJS will simulate a Backspace
  428.    command, and when the user re-opens the channel the job will begin
  429.    transmission again from an earlier point in the same data set.  This
  430.    is true even if the user terminates the current session first, and
  431.    reopens the channnel in a later session; RJS saves the state of its
  432.    output streams.  However, before re-opening the channel he can defer
  433.    this job for later output, restart it at the beginning, or cancel its
  434.    output (see Appendix D).  Note that aborting the channel is only
  435.    effective if RJS has not yet sent the End-of-Data transaction.
  436.  
  437.    If the user's process, NCP, or host, or the Network itself fails
  438.    during an output operation, RJS will act as if the channel had been
  439.    aborted and the user signed off.  In no case should a user lose
  440.    output from NETRJS.
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472. Braden                                                          [page 8]
  473.  
  474.                                                                15 Jul 71
  475. NIC 7133, RFC 189:  Interim NETRJS Specifications
  476.  
  477.  
  478.  
  479.                                APPENDIX A
  480.  
  481.                     Data Transfer Protocol in NETRJS
  482.  
  483.    1.  Introduction
  484.  
  485.       The records in the data transfer channels (for virtual card
  486.       reader, printer, and punch) are generally grouped into
  487.       transactions preceded by headers.  The transaction header includes
  488.       a sequence number and the length of the transaction.  Network byte
  489.       size must be 8 bits in these data streams.
  490.  
  491.       A transaction is the unit of buffering within the Model 91
  492.       software.  Internal buffers are 880 bytes.  Therefore, CCN cannot
  493.       transmit or receive a single transaction larger than 880 bytes.
  494.       Transactions can be as short as one record; however, those sites
  495.       which are concerned with efficiency should send transactions as
  496.       close as possible to the 880 byte limit.
  497.  
  498.       There is no necessary connection between physical message
  499.       boundaries and transactions ("logical messages"); the NCP can
  500.       break the "logical message" arbitrarily into physical messages.
  501.       At CCN we will choose to have each logical message start a new
  502.       physical message, so the NCP can send the last part of each
  503.       message without waiting  for an explicit request, but a remote
  504.       site is not required to follow this convention.
  505.  
  506.       Each logical record within a transaction begins with an "op code"
  507.       byte which contains the channel identification, so its value is
  508.       unique to each channel but constant within a channel.  This choice
  509.       provides a convenient way to verify bit synchronization at the
  510.       receiver, and also allows an extension in the future to true
  511.       "multi-leaving" (i.e., multiplexing all channels within one
  512.       connection in each direction).
  513.  
  514.       The only provisions for transmission error detection in the
  515.       current NETRJS protocol are (1) this "op code" byte to verify bit
  516.       synchronization and (2) the transaction sequence number.  at the
  517.       urging of Crowther, we favor putting an optional 16 bit check sum
  518.       in the unused bytes of the second-level header.  It is currently
  519.       assumed that if an error is detected then the channel is to be
  520.       aborted and the entire transmission repeated.  To provide
  521.       automatic retransmission we would have to put in reverse channels
  522.       for ACK/NAK messages.
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531. Braden                                                          [page 9]
  532.  
  533.                                                                15 Jul 71
  534. NIC 7133, RFC 189:  Interim NETRJS Specifications
  535.  
  536.  
  537.  
  538.    2.  Character Sets
  539.  
  540.       For an ASCII VRBT, NETRJS will map ASCII in the card reader stream
  541.       into EBCDIC, and re-map the printer stream to ASCII, by the
  542.       following rules:
  543.  
  544.          1.  One-to-one mapping between the three ASCII characters
  545.              broken vertical bar, tilde, and back slash, which are not
  546.              in EBCDIC, and the three EBCDIC characters vertical bar,
  547.              not sign and cent sign (respectively) which are not in
  548.              ASCII.
  549.  
  550.          2.  The other six ASCII graphics not in EBCDIC will be
  551.              translated on input to an EBCDIC question mark (?).
  552.  
  553.          3.  The ASCII control will be mapped into and from the EBCDIC
  554.              control TM.
  555.  
  556.          4.  The EBCDIC characters not in ASCII will be mapped in the
  557.              printer stream into the ASCII question mark.
  558.  
  559.    3.  Meta-Notation
  560.  
  561.       The following description of the NETRJS data transfer protocol
  562.       uses a formal notation derived from that proposed in RFC #31 by
  563.       Bobrow and Sutherland.  (The NETRJS format is also shown
  564.       diagramatically in Figure 2.)
  565.  
  566.       The derived notation is both concise and easily readable, and we
  567.       recommend its use for Network documentation.  The notation
  568.       consists of a series of productions for bit string variables whose
  569.       names are capitalized.  Each variable name which represents a
  570.       fixed length field is followed by the length in bits (e.g.,
  571.       SEQNUMB(16)).  Numbers enclosed in quotes are decimal, unless
  572.       qualified by a leading X meaning hex.  Since each hex digit is 4
  573.       bits, the length is not shown explicitly in hex numbers.  For
  574.       example, '1'(8) and X'FF' both represent a string of 8 one bits.
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590. Braden                                                         [page 10]
  591.  
  592.                                                                15 Jul 71
  593. NIC 7133, RFC 189:  Interim NETRJS Specifications
  594.  
  595.  
  596.  
  597.       The meta-syntactic operators are:
  598.  
  599.          |     :alternative string
  600.  
  601.          [ ]   :optional string
  602.  
  603.          ( )   :grouping
  604.  
  605.          +     :catenation of bit strings
  606.  
  607.       The numerical value of a bit string (interpreted as an integer) is
  608.       symbolized by a lower case identifier preceding the string
  609.       expression and separated by a colon.  For example, in
  610.       "i:FIELD(8)", i symbolizes the numeric value of the 8 bit string
  611.       FIELD.
  612.  
  613.       Finally, we use Bobrow and Sutherland's symbolism for iteration of
  614.       a sub-string:  (STRING-EXPRESSION = n); denotes n occurrences of
  615.       STRING EXPRESSION, implicitly catenated together.  Here any n
  616.       greater or equal to 0 is assumed unless n is explicitly
  617.       restricted.
  618.  
  619.    4.  Protocol Definition
  620.  
  621.       STREAM _ (TRANSACTION = n) + [END-OF-DATA]
  622.  
  623.       That is, STREAM, the entire sequence of data on a particular open
  624.       channel, is a sequence of n TRANSACTIONS followed by an
  625.       END-OF-DATA marker (omitted if the sender aborts the channel).
  626.  
  627.          TRANSACTION _ THEAD(72) + (RECORD = r) + ('0'(1) = f)
  628.  
  629.       That is, a transaction consists of a 72 bit header, r records, and
  630.       f filler bits.
  631.  
  632.          THEAD _ X'FF' + f:FILLER(8) + SEQNUMB(16) + LENGTH(32) + X'00'
  633.  
  634.       Transactions are to be consecutively numbered in the SEQNUMB
  635.       field, starting with 0 in the first transaction after the channel
  636.       is (re-) opened.  The 32 bit LENGTH field gives the total length
  637.       in bits of the r RECORD's which follow.  For convenience, the
  638.       using site may add f additional filler bits at the end of the
  639.       transaction to reach a convenient word boundary on his machine;
  640.       the value f is also transmitted in the FILLER field of THEAD.
  641.  
  642.          RECORD _ COMPRESSED | TRUNCATED
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649. Braden                                                         [page 11]
  650.  
  651.                                                                15 Jul 71
  652. NIC 7133, RFC 189:  Interim NETRJS Specifications
  653.  
  654.  
  655.  
  656.       RJS will accept intermixed RECORD's which are COMPRESSED or
  657.       TRUNCATED in an input stream.  RJS will send one or the other
  658.       format in the printer and punch streams to a given VRBT; the
  659.       choice is determined when CCN establishes a terminal id.
  660.  
  661.          COMPRESSES _ '2'(2) + DEVID(6) + (STRING = p) + '0'(8)
  662.  
  663.          STRING     _ ('6'(3) + i:DUPCOUNT(5))
  664.                       This form represents a string of i consecutive
  665.                       blanks
  666.  
  667.                       ('7'(3) + i:DUPCOUNT(5) + TEXTBYTE(8))
  668.                       This form represents string of i consecutive
  669.                       duplicates of TEXTBYTE.
  670.  
  671.                       ('2'(2) + j:LENGTH(6) + (TEXTBYTE(8) = j))
  672.                       This form represents a string of j characters.
  673.  
  674.       The first two alternatives above in the STRING production begin
  675.       with count bytes chosen to be distinguishable from the (currently
  676.       defined) Telnet control characters.  In a Telnet stream, the third
  677.       count byte would not be needed.  This is irrelevant to the current
  678.       NETRJS, but it would allow the use of compression within a Telnet
  679.       data stream.
  680.  
  681.          TRUNCATED  _ '3'(2) + DEVID(6) + n:COUNT(8) + (TEXTBYTE(8) = n)
  682.  
  683.          DEVID(6)   _ DEVNO(3) + t:DEVTYPE(3)
  684.  
  685.                       DEVID identifies a particular virtual device,
  686.                       i.e., it identifies a channel.  DEVTYPE specifies
  687.                       the type of device, as follows:
  688.  
  689.                       t = 1:  Output to remote operator console
  690.                           2:  Input from remote operator console
  691.                           3:  Input from card reader
  692.                           4:  Output to printer
  693.                           5:  Output to card punch
  694.                         6,7:  Unused
  695.  
  696.                       DEVNO(3) identifies the particular device of type
  697.                       t at this remote site; at present only DEVNO = O
  698.                       is possible.
  699.  
  700.          END-OF-DATA _X'FE'
  701.                       Signals end of job (output) or job stack
  702.                       (input).
  703.  
  704.  
  705.  
  706.  
  707.  
  708. Braden                                                         [page 12]
  709.  
  710.                                                                15 Jul 71
  711. NIC 7133, RFC 189:  Interim NETRJS Specifications
  712.  
  713.  
  714.  
  715.                                APPENDIX B
  716.  
  717.                     Telnet for VRBT operator Console
  718.  
  719. The remote operator console connections use the ASCII Telnet protocol as
  720. in RFC #158.  Specifically:
  721.  
  722.    1.  The following one-to-one character mappings are used for the
  723.    three EBCDIC graphics not in ASCII:
  724.  
  725.         ASCII in Telnet       |  NETRJS
  726.       ----------------------------------------------------
  727.           broken vertical bar |  solid vertical bar
  728.           tilde               |  not sign
  729.           back slash          |  cent sign
  730.  
  731.    2.  Initially all Telnet control characters will be ignored.  In the
  732.    future we will implement the Telnet Break facility to allow a remote
  733.    user to terminate extensive console output from a commmand.
  734.  
  735.    3.  An operator console input line which exceeds 133 characters
  736.    (exclusive of CR LF) will be truncated by NETRJS.
  737.  
  738.    4.  NETRJS will accept BS to delete a character, and CAN to delete
  739.    the current line.  The sequence CR LF terminates each input and
  740.    output line.  HT will be translated to a single space in RJS.  All
  741.    other ASCII control characters will be ignored.
  742.  
  743.    5.  NETRJS will translate the six ASCII graphics with no equivalent
  744.    in EBCDIC into the character question mark ("?") on input.
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767. Braden                                                         [page 13]
  768.  
  769.                                                                15 Jul 71
  770. NIC 7133, RFC 189:  Interim NETRJS Specifications
  771.  
  772.  
  773.  
  774.                                APPENDIX C
  775.  
  776.                             Carriage Control
  777.  
  778.    The carriage control characters sent in a printer channel by NETRJS
  779.    conform to IBM's extended USASI code, defined by the following table:
  780.  
  781.       CODE         ACTION BEFORE WRITING RECORD
  782.       ----         ----------------------------
  783.       Blank        Space one line before printing
  784.         0          Space two lines before printing
  785.         -          Space three lines before printing
  786.         +          Suppress space before printing
  787.         1          Skip to channel 1
  788.         2          Skip to channel 2
  789.         3          Skip to channel 3
  790.         4          Skip to channel 4
  791.         5          Skip to channel 5
  792.         6          Skip to channel 6
  793.         7          Skip to channel 7
  794.         8          Skip to channel 8
  795.         9          Skip to channel 9
  796.         A          Skip to channel 10
  797.         B          Skip to channel 11
  798.         C          Skip to channel 12
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826. Braden                                                         [page 14]
  827.  
  828.                                                                15 Jul 71
  829. NIC 7133, RFC 189:  Interim NETRJS Specifications
  830.  
  831.  
  832.  
  833.                                APPENDIX D
  834.  
  835.                       Network/RJS Command Summary
  836.  
  837. Terminal Control and Information Command
  838.  
  839.    SIGNON       First command of a session; identifies VRBT by giving
  840.                 its terminal id.
  841.  
  842.    SIGNOFF      Last command of a session; RJS waits for any data
  843.                 transfer in progress to complete and then closes all
  844.                 connections.
  845.  
  846.    STATUS       Outputs on the remote operator console a cmplete list,
  847.                 or a summary, of all jobs in the system for this VRBT,
  848.                 with an indication of their processing status in the
  849.                 Model 91.
  850.  
  851.    ALERT        Outputs on the operator console the special "Alert"
  852.                 message, if any, from CCN computer operator.  The Alert
  853.                 message is also automatically sent when the user does a
  854.                 SIGNON, or whenever the message changes.
  855.  
  856.    MSG          Sends a message to CCN computer operator or to any other
  857.                 RJS terminal (real or virtual).  A message from the
  858.                 computer operator or another RJS terminal will
  859.                 automatically appear on the remote operator console.
  860.  
  861. Job Control and Routing Commands
  862.  
  863.    Under CCN's job management system, the default destination for output
  864.    is the input source.  Thus, a job submitted under a given VRBT will
  865.    be returned to that VRBT (i.e., the same terminal id), unless the
  866.    user's JCL overrides the default destination.
  867.  
  868.    RJS places print and punch output destined for a particular remote
  869.    terminal into either an Active Queue or a Deferred Queue.  When the
  870.    user opens his print or punch output channel, RJS immediately starts
  871.    sending job output from the Active Queue, and continues until this
  872.    queue is empty.  Job output in the Deferred Queue, on the other hand,
  873.    must be called for by job name, (via a RESET command from the remote
  874.    operator)  before RJS will send it.  The Active/Deferred choice for
  875.    output from a job is determined by the deferral status of the VRBT
  876.    when the job is entered; the deferral status, which is set to the
  877.    Active option when the user signs on, may be changed by the SET
  878.    command.
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885. Braden                                                         [page 15]
  886.  
  887.                                                                15 Jul 71
  888. NIC 7133, RFC 189:  Interim NETRJS Specifications
  889.  
  890.  
  891.  
  892.    SET          Allows the remote user to change certain properties of
  893.                 his VRBT for the duration of the current session;
  894.  
  895.                 (a)  May change the default output destination to be
  896.                      another (real or virtual) RJS terminal or the
  897.                      central facility.
  898.  
  899.                 (b)  May change the deferral status of the VRBT.
  900.  
  901.    DEFER        Moves the print and punch output for a specified job or
  902.                 set of jobs from the Active Queue to the Deferred Queue.
  903.                 If the job's output is in the process of being
  904.                 transmitted over a channel, RJS aborts the channel and
  905.                 saves the current output location before moving the job
  906.                 to the Deferred Queue.  A subsequent RESET command will
  907.                 return it to the Active Queue with an implied Backspace
  908.                 (BSP).
  909.  
  910.    RESET        Moves specified job(s) from Deferred to Active Queue so
  911.                 they may be sent to user.  A specific list of job names
  912.                 or all jobs can be moved with one RESET command.
  913.  
  914.    ROUTE        Re-routes output of specified jobs (or all jobs) waiting
  915.                 in the Active and Deferred Queues for the VRBT.  The new
  916.                 destination may be any other RJS terminal or the central
  917.                 facility.
  918.  
  919.    ABORT        Cancels a job which was successfully submitted and
  920.                 awaiting execution or is currently executing in the
  921.                 Model 91.  If the cancelled job was in execution, all
  922.                 output it produced will be returned.
  923.  
  924. Output Stream Control Commands
  925.  
  926.    BSP (BACKSPACE)  "Backspaces" output stream within current sysout
  927.                      data set.  Actual amount backspaced depends upon
  928.                      sysout blocking but is typically equivalent to a
  929.                      page on the line printer.
  930.  
  931.    CAN (CANCEL)     (a)  On an output channel, CAN causes the rest of
  932.                          the output in the sysout data set currently
  933.                          being transmitted to be omitted.
  934.                          Alternatively, may omit the rest of the sysout
  935.                          data sets for the job currently being
  936.                          transmitted; however, the remaining system and
  937.                          accounting messages will be sent.
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944. Braden                                                         [page 16]
  945.  
  946.                                                                15 Jul 71
  947. NIC 7133, RFC 189:  Interim NETRJS Specifications
  948.  
  949.  
  950.  
  951.                     (b)  On an input channel, CAN causes RJS to ignore
  952.                          the job currently being read.  However, the
  953.                          channel is not aborted as a result, and RJS
  954.                          will continue reading in jobs on the channel.
  955.  
  956.                     (c)  CAN can delete all sysout data sets for
  957.                          specified job(s) waiting in Active or Deferred
  958.                          Queue.
  959.  
  960.    RST (RESTART)    (a)  Restarts a specified output stream at the
  961.                          beginning of the current sysout data set or,
  962.                          optionally, at the beginning of the job.
  963.  
  964.                     (b)  Marks as restarted specified job(s) whose
  965.                          transmission was earlier interrupted by system
  966.                          failure or user action (e.g., DEFER command or
  967.                          aborting the channel).  When RJS transmits
  968.                          these jobs again it will start at the beginning
  969.                          of the partially transmitted sysout data set
  970.                          or, optionally, at the beginning of the job.
  971.                           this function may be applied to jobs in either
  972.                          the Active or the Deferred Queue; however, if
  973.                          the job was in the Deferred Queue then RST also
  974.                          moves it to the Active Queue.  If the job was
  975.                          never transmitted, RST has no effect other than
  976.                          this queue movement.
  977.  
  978.    REPEAT           Sends additional copies of the output of specified
  979.                     jobs.
  980.  
  981.    EAM              Echoes the card reader stream back in the printer or
  982.                     punch stream, or both.
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003. Braden                                                         [page 17]